package com.kgc.dangdang.util;

import com.kgc.scd.constant.CommonConstant;

/**
 * @Author: Xyh
 * @Date: 2022/8/15 14:49
 * @Description: 统一返回结果构建工具类
 */
public class ResultBuildUtils {

    /**
     * @author      : Xyh
     * @date        : 2022/8/15
     * @param       : [T]
     * @return      : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建成功的返回，支持任意类型参数
     */
    public static <T> RequestResult<T> success(T t) {

        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(CommonConstant.UNIFY_RETURN_SUCCESS_CODE);
        requestResult.setMsg(CommonConstant.UNIFY_RETURN_SUCCESS_CODE_MSG);
        requestResult.setData(t);

        return requestResult;
    }

    /**
     * @author      : Xyh
     * @date        : 2022/8/15
     * @param       : [T]
     * @return      : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建成功的返回，支持任意类型参数
     */
    public static <T> RequestResult<T> success() {

        return success(null);
    }

    /**
     * @author      : Xyh
     * @date        : 2022/8/15
     * @param       : [T]
     * @return      : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建失败的返回，支持任意类型参数，一般都是：默认不好归类的系统异常
     */
    public static <T> RequestResult<T> fail(T t) {

        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(CommonConstant.UNIFY_RETURN_FAIL_CODE);
        requestResult.setMsg(CommonConstant.UNIFY_RETURN_FAIL_CODE_MSG);
        requestResult.setData(t);

        return requestResult;
    }

    /**
     * @author      : Xyh
     * @date        : 2022/8/15
     * @param       : [T]
     * @return      : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建失败的返回，支持支持错误码和错误说明
     */
    public static <T> RequestResult<T> fail() {

        return fail(null);
    }

    /**
     * @author : Xyh
     * @date   : 2022/8/15
     * @param  : [t]
     * @return : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建失败的返回，支持支持错误码和错误说明
     */
    public static <T> RequestResult<T> fail(String errCode, String errMsg){
        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(errCode);
        requestResult.setMsg(errMsg);
        requestResult.setData(null);
        return requestResult;
    }


    /**
     * @author      : Xyh
     * @date        : 2022/8/15
     * @param       : [T]
     * @return      : com.kgc.sbt.util.RequestResult<T>
     * @description : 用于构建失败的返回，支持错误码和错误说明，任意类型参数
     */
    public static <T> RequestResult<T> fail(String errCode, String errMsg, T t) {

        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(errCode);
        requestResult.setMsg(errMsg);
        requestResult.setData(t);

        return requestResult;
    }
}
